import type {
  EntityApi,
  EntityPage,
  EntityReq,
  EntityModel,
  EntityTotal,
  EntityKey,
  EntityKeyList,
  EntityCreateReq,
  EntityUpdateReq,
} from "jmash-core";

export interface PermissionApi extends EntityApi {}

// 模块的查询参数
export interface PermissionReq extends EntityReq {
  tenant?: string;
  // 编码模糊查询
  likePermCode?: string;
  // 名称模糊查询
  likePermName?: string;
}

// 模块管理分页
export interface PermissionPage extends EntityPage {
  // 页数
  curPage: number;
  // 条数
  pageSize: number;
  // 当前页内容
  results: Array<PermissionModel>;
  // 总记录数
  totalSize: number;
  // 本页小计
  subTotalDto: PermissionModelTotal;
  // 合计
  totalDto: PermissionModelTotal;
}

// 合计
export interface PermissionModelTotal extends EntityTotal {
  // 总记录数
  totalSize: number;
}

// 新增表单参数
export interface PermissionCreateReq extends EntityCreateReq {
  // 租户
  tenant?: string;
  // 用于检测重复请求的唯一字符串ID
  requestId?: string;
  // 编码
  permCode?: string;
  // 名称
  permName?: string;
}

// 编辑表单参数
export interface PermissionUpdateReq extends EntityUpdateReq {
  // 租户
  tenant?: string;
  // 用于检测重复请求的唯一字符串ID
  requestId?: string;
  // 编码
  permCode?: string;
  // 名称
  permName?: string;
  // 更新字段掩码
  updateMask: string;
  // 权限ID
  permId?: string;
}

export type PermissionFormReq = PermissionCreateReq | PermissionUpdateReq;

// 权限表实体
export interface PermissionModel extends EntityModel {
  // 权限ID
  permId?: string;
  // 权限编码
  permCode: string;
  // 权限名称
  permName?: string;
}

// 权限表主键
export interface PermissionKey extends EntityKey {
  // 租户
  tenant?: string;
  // 权限ID
  permId?: string;
}

// 权限表主键
export interface PermissionKeyList extends EntityKeyList {
  // 租户
  tenant?: string;
  // 权限ID
  permId?: string[];
}

// 资源权限列表
export interface ResourcePermList {
  results: ResourcePerm[];
}

// 资源权限
export interface ResourcePerm {
  resourceId: string;
  resourceName: string;
  parentId: string;
  perms: PermissionModel[];
  children: ResourcePerm[];
}
